﻿(function ($) {
    $.fn.vaciarObjeto = function () {
        return this.empty();
    }

    $.fn.LoadTablaAsignacion = function (dataParametros, dataURI, options) {
        var $self = this;
        this.hide();

        //Establecemos los valores por defecto
        var opciones_default = {
            animationLoad: false,
            animationID: "",
            mensajeAllRegistros: 'Seleccionar todos los registros'
        }
        var opciones = jQuery.extend(opciones_default, options);
        var data_default = {
            LoadMaterias: '',
            LoadProfesores: ''
        }
        var dataURL = jQuery.extend(data_default, dataURI);

        //Ocultamos el objeto y mostramos la animacion de carga si se hubiera establecido
        if (opciones.animationLoad) $('#' + opciones.animationID).fadeIn(100);

        //Dimensionamos la tabla
        var $divtbl = $('<div class="jtable-main-container" style=""></div>');
        var $tabla = $('<table class="jtable" style="Width: 500px; margin: 0 auto; border-radius: 10px; border-bottom: 1px solid #CDCDCD;"></table>');
        var $thead = $('<thead><tr></tr></thead>');
        var $tbody = $('<tbody></tbody>');

        //Creamos las columnas de la tabla
        $thead.children().append('<th class="jtable-column-header" style="Width: 35px;"><div class="jtable-column-header-container"><span class="jtable-column-header-text">No.</span></div></th>');
        $thead.children().append('<th class="jtable-column-header" style="Width: 200px;"><div class="jtable-column-header-container"><span class="jtable-column-header-text">Materia</span></div></th>');
        $thead.children().append('<th class="jtable-column-header"><div class="jtable-column-header-container"><span class="jtable-column-header-text">Profesor</span></div></th>');

        //Ejecutamos la llamada AJAX para recoger los datos del lado del servidor
        $.ajax({
            url: dataURL.LoadMaterias,
            type: 'POST',
            data: dataParametros,
            success: function (data) {
                if (data.Result) {
                    //Eliminamos cualquier objeto que se encuentre el DOM
                    $self.vaciarCheckBoxList();

                    //Verificamos que no existan "CERO" registros
                    if (data.Count == 0)
                        $self.append('<p>No se encontró ningún registro según los parámetros especificados</p>');
                    else {
                        //Debemos de generar el listado de profesores primero
                        var strPRF = '<select class="combobox-list lst-prf" name="lstPRF"><option value="">-- Seleccione el profesor que se asignara --</option>';
                        $.ajax({
                            url: dataURL.LoadProfesores,
                            type: 'POST',
                            success: function (dataPRF) {
                                if (dataPRF.Result) {
                                    $.each(dataPRF.Records, function (k, v) {
                                        strPRF = strPRF + '<option value="' + k + '">' + v + '</option>'
                                    });

                                    //Al finalizar de agregar todos los datos cerramos el "SELECT"
                                    strPRF = strPRF + '</select>'

                                    //Generamos lo demas de la tabla
                                    $.each(data.Records, function (key, value) {
                                        if (value.No % 2) //Si el registro es impar entonces
                                            $tbody.append('<tr class="jtable-row-even"><td class="" style="text-align: center;">' + value.No + '</td><td class="">' + value.Materia + '</td><td class="" data-id-mat="' + value.ID + '">' + strPRF + '</td></tr>');
                                        else  //Si el Registro es Par
                                            $tbody.append('<tr><td class="" style="text-align: center;">' + value.No + '</td><td class="">' + value.Materia + '</td><td class="" data-id-mat="' + value.ID + '">' + strPRF + '</td></tr>');
                                    });
                                    $('#' + opciones.animationID).hide();
                                    $self.fadeIn(150);
                                    $("#save-all-vinculacion").show();
                                }
                            }
                        });


                    }
                } else
                    $self.append('<p>Lo sentimos, ocurrio un error al intentar recuperar los datos. ' + data.Mensaje + '</p>');

                //Mostramos de nuevo los objetos y ocultamos el control de load
                $tabla.append($thead);
                $tabla.append($tbody);
                $divtbl.append($tabla);
                $self.append($divtbl);
            }, error: function (jqXhr, textStatus, errorThrown) {
                $('#' + opciones.animationID).hide();
                alert("Ocurrio un error del lado del servidor. " + jqXhr);
            }
        });
    };
})(jQuery);